package xyz.riceball.usercore.websocket;

import javax.websocket.Session;
import javax.websocket.server.PathParam;
import java.io.IOException;

/**
 * <p>
 * websocket相关接口
 * </p>
 *
 * @author xiaovcloud
 * @since 2022/5/9 20:04
 */

public interface WebsocketServer {

    /**
     * 连接建立成功调用
     *
     * @param session 客户端与socket建立的会话
     * @param userId  客户端的userName
     */
    void onOpen(Session session, @PathParam(value = "userId") String userId);

    /**
     * 关闭连接时调用
     *
     * @param userId 关闭连接的客户端的姓名
     */
    void onClose(@PathParam(value = "userId") String userId);

    /**
     * 收到客户端消息时触发（群发）
     *
     * @param message
     * @throws IOException
     */
    void onMessage(String message) throws IOException;

    /**
     * 发生错误时候
     *
     * @param session
     * @param throwable
     */
    void onError(Session session, Throwable throwable);

}
